/*
 * Copyright 1999-2004 Alibaba.com All right reserved. This software is the confidential and proprietary information of
 * Alibaba.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only
 * in accordance with the terms of the license agreement you entered into with Alibaba.com.
 */
package com.liangdev.common.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * 类DownloadUtil.java的实现描述：TODO 类实现描述
 * 
 * @author chongan.wangca 2012-5-16 上午1:49:32
 */
public class DownloadUtil {

    // 建立缓冲区
    private int FILESIZE = 4 * 1024;

    public boolean downFile(String pUrl, String pStoreName) {
        // String lastName = pUrl.substring(pUrl.lastIndexOf("/"+1,pUrl.length()));//pUrl.split("/");
        String[] names = pUrl.split("/");
        String name = names[names.length - 1];

        OutputStream outputStream = null;
        InputStream inputStream = null;
        HttpURLConnection urlConnection;
        boolean bSuccess = false;
        URL url;
        // 创建建文件
        File file = new File(pStoreName + name);
        if ((file != null) && !file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                outputStream = new FileOutputStream(file);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            try {
                url = new URL(pUrl);
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setDoInput(true);
                urlConnection.connect();

                inputStream = urlConnection.getInputStream();
                int len = urlConnection.getContentLength();
                System.out.println("file size is:" + len);
                byte[] buffer = new byte[FILESIZE];
                int byteRead = -1;

                while ((byteRead = (inputStream.read(buffer))) != -1) {
                    outputStream.write(buffer, 0, byteRead);
                }
                outputStream.flush();

                inputStream.close();
                outputStream.close();
                bSuccess = true;
            } catch (MalformedURLException e) {
                e.printStackTrace();
                bSuccess = false;
            } catch (IOException e) {
                e.printStackTrace();
                bSuccess = false;
            }
        }

        return bSuccess;
    }

    public static void main(String[] args) {
        DownloadUtil downloadUtil = new DownloadUtil();
        downloadUtil.downFile("http://www.name.com/deleting-domains/download.php", "e:/");
    }
}
